#pragma once

#include <string>
#include <map>

class AuthManager
{
public:
    // 用户登录验证
    bool login(const std::string &username, const std::string &password);

    // 注册新用户
    bool registerUser(const std::string &username, const std::string &password, const std::string &role);

    // 退出登录
    void logout();

    // 检查登录状态
    bool isLoggedIn() const;

    // 获取当前登录用户身份
    std::string getCurrentUserRole() const;

    // 检查用户权限
    bool hasPermission(const std::string &requiredRole) const;

    // 获取所有用户信息
    std::map<std::string, std::string> &getUsers();

private:
    std::map<std::string, std::string> users; // 存储用户名-密码对
    bool isLoggedInStatus;                    // 登录状态
    std::string currentUserRole;              // 当前登录用户身份
};

/*  接口说明

login：用于用户登录验证，接收用户名和密码作为参数，返回布尔值表示登录是否成功。
registerUser：用于注册新用户，接收用户名、密码和用户角色作为参数，返回布尔值表示注册是否成功。
logout：用于退出登录，无参数，无返回值。
isLoggedIn：用于检查用户是否已登录，无参数，返回布尔值。
getCurrentUserRole：用于获取当前登录用户的role，无参数，返回用户身份。
hasPermission：用于检查当前登录用户是否具有指定权限，接收所需权限作为参数，返回布尔值。

*/